package com.lsj.spring.config;

import lombok.Getter;
import lombok.Setter;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @author Lsj
 * @version 1.0
 * @date 2021/6/24 19:41
 */
public class LogInterceptor implements InvocationHandler {
    /**
     * 被代理的对象
     */
    @Getter
    @Setter
    private Object target;

    /**
     *
     * @param proxy 代理的对象
     * @param method 代理的方法
     * @param args 方法的参数
     * @return 方法的返回值
     * @throws Throwable 异常
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // 代理到这个方法 正式执行这个方法之前
        System.out.println("执行"+method+"方法之前");
        // 可以对这些参数进修改,运行这个方法得到返回值
        Object res = method.invoke(target,args);
        // 返回这个方法的返回
        System.out.println("执行"+method+"方法之后");
        return res;
    }
}
